/**
 * 点击指定区域外部，执行相应回调函数
 */
const clickOut = {
    bind: (el, binding) => {
        el._handler = (e) => {
            // 判断点击的元素是否本身，是则返回
            if (el.contains(e.target)) return;

            // 如果绑定了函数，则调用函数
            if (typeof binding.value === 'function') {
                binding.value();
            }
        };

        // 添加事件监听
        setTimeout((_) => {
            document.addEventListener('click', el._handler);
        }, 0);
    },
    unbind(el) {
        // 解除事件监听
        document.removeEventListener('click', el._handler);
    }
};

export default clickOut;
